(function($){ "use strict"; $.fn.JAS_ImagesLoaded=function(callback){ var JAS_Images=function(src, callback){ var img=new Image; img.onload=callback; img.src=src; } var images=this.find('img').toArray().map(function(el){ return el.src; }); var loaded=0; $(images).each(function(i, src){ JAS_Images(src, function(){ loaded++; if(loaded==images.length){ callback(); }}) }) } var isMobile=function(){ return (/Android|iPhone|iPad|iPod|BlackBerry/i).test(navigator.userAgent||navigator.vendor||window.opera); } var initCarousel=function(){ $('.jas-carousel').not('.slick-initialized').slick(); $('body').on('found_variation', '.variations_form', function(ev, variation){ if(variation&&variation.image&&variation.image.src&&variation.image.src.length > 1){ $('.jas-carousel').slick('slickGoTo', 0); wcInitImageZoom(); }}); } var initMasonry=function(){ var el=$('.jas-masonry'); el.each(function(i, val){ var _option=$(this).data('masonry'); if(_option!==undefined){ var _selector=_option.selector, _width=_option.columnWidth, _layout=_option.layoutMode; $(this).imagesLoaded(function(){ $(val).isotope({ layoutMode:_layout, itemSelector: _selector, percentPosition: true, masonry: { columnWidth: _width }}); }); $('.jas-filter a').click(function(){ var selector=$(this).data('filter'), parent=$(this).parents('.jas-filter'); $(val).isotope({ filter: selector }); if($(this).hasClass('selected')){ return false; } parent.find('.selected').removeClass('selected'); $(this).addClass('selected'); return false; }); }}); } var initSearchForm=function(){ var HS=$('.header__search'); $('.sf-open').on('click', function(e){ e.preventDefault(); HS.fadeIn(); HS.find('input[type="text"]').focus(); }); $('#sf-close').on('click', function(e){ e.preventDefault(); HS.fadeOut(); }); } var initPushMenu=function(){ $('a.jas-push-menu-btn').on('click', function (e){ e.preventDefault(); var mask='
'; $('body').toggleClass('menu-opened'); $(mask).hide().appendTo('body').fadeIn('fast'); $('.mask-overlay, .close-menu').on('click', function(){ $('body').removeClass('menu-opened'); $('.mask-overlay').remove(); }); }); } var initDropdownMenu=function(){ $('#jas-mobile-menu ul li.has-sub').append(''); $('body').on('click','.holder',function(){ var el=$(this).closest('li'); if(el.hasClass('open')){ el.removeClass('open'); el.find('li').removeClass('open'); el.find('ul').slideUp(); }else{ el.addClass('open'); el.children('ul').slideDown(); el.siblings('li').children('ul').slideUp(); el.siblings('li').removeClass('open'); el.siblings('li').find('li').removeClass('open'); el.siblings('li').find('ul').slideUp(); }}); } var initStickyMenu=function(){ if(JAS_Data_Js!=undefined&&JAS_Data_Js[ 'header_sticky' ]){ var header=document.getElementById('jas-header'), headerMid=document.getElementsByClassName('header__mid')[0], headerMidHeight=$('.header__mid').outerHeight(), headerTopHeight=$('.header__top').outerHeight(), headerBotHeight=$('.header__bot').outerHeight(), headerHeight=headerMidHeight + headerTopHeight + headerBotHeight, adminBar=$('.admin-bar').length ? $('#wpadminbar').height():0; if(headerMid==undefined) return; header.setAttribute('style', 'height:' + headerHeight + 'px'); $(window).scroll(function(){ if($(this).scrollTop() > headerTopHeight){ header.classList.add('header-sticky'); headerMid.setAttribute('style', 'position: fixed;top:' + adminBar + 'px'); }else{ header.classList.remove('header-sticky'); headerMid.removeAttribute('style'); }}); }} var initRTLMenu=function(){ var menu=$('.sub-menu li'), subMenu=menu.find(' > .sub-menu'); menu.on('mouseenter', function (){ if(subMenu.length){ if(subMenu.outerWidth() >($(window).outerWidth() - subMenu.offset().left)){ subMenu.addClass('rtl-menu'); }} }); } var wcQuantityAdjust=function(){ $('body').on('click', '.quantity .plus', function(e){ var $input=$(this).parent().parent().find('input'), $quantity=parseInt($input.attr('max')), $val=parseInt($input.val()); if(( $quantity!=='')&&($quantity <=$val + 1)){ $('.quantity .plus').css('pointer-events', 'none'); } $input.val($val + 1); $input.trigger('change'); }); $('body').on('click', '.quantity .minus', function(e){ var $input=$(this).parent().parent().find('input'), value=parseInt($input.val()) - 1; if(value < 1) value=1; $input.val(value); $('.quantity .plus').removeAttr('style'); $input.trigger('change'); }); } var backToTop=function(){ var el=$('#jas-backtop'); $(window).scroll(function(){ if($(this).scrollTop() > $(window).height()){ el.show(); }else{ el.hide(); }}); el.click(function(){ $('body,html').animate({ scrollTop: 0 }, 500); return false; }); } var initMagnificPopup=function(){ if($('.jas-magnific-image').length > 0){ $('.jas-magnific-image').magnificPopup({ type: 'image', image: { verticalFit: true }, mainClass: 'mfp-fade', removalDelay: 800, callbacks: { beforeOpen: function(){ $('#jas-wrapper').after('
'); }, open: function(){ $('.loader').remove(); }, }}); }} var initQuickView=function(){ $('body').on('click', '.btn-quickview', function(e){ var _this=$(this), id=_this.attr('data-prod'), data={ action: 'jas_quickview', product: id }; $('#jas-wrapper').after('
'); $.post(JASAjaxURL, data, function(response){ $.magnificPopup.open({ items: { src: response, type: 'inline', }, mainClass: 'mfp-fade', removalDelay: 800 }); setTimeout(function(){ if($('.product-quickview form').hasClass('variations_form')){ $('.product-quickview form.variations_form').wc_variation_form(); $('.product-quickview select').trigger('change'); }}, 100); $('.loader').remove(); initCarousel(); $('.images').imagesLoaded(function(){ var imgHeight=$('.product-quickview .images').outerHeight(); $('.product-quickview .jas-row > div').css({ 'height': imgHeight }); }); }); e.preventDefault(); e.stopPropagation(); }); } var wcExtraContent=function(){ $('body').on('click', '.jas-wc-help', function(e){ $('#jas-wrapper').after('
'); var data={ action: 'jas_shipping_return' } $.post(JASAjaxURL, data, function(response){ $.magnificPopup.open({ items: { src: response }, }); $('.loader').remove(); }); e.preventDefault(); e.stopPropagation(); }); } var initMiniCart=function(){ $('body').on('click', '.jas-icon-cart > a', function (e){ e.preventDefault(); var mask='
'; $('body').toggleClass('cart-opened'); $(mask).hide().appendTo('body').fadeIn('fast'); $('.mask-overlay, .close-cart').on('click', function(){ $('body').removeClass('cart-opened'); $('.mask-overlay').remove(); }); }); } var refreshMiniCart=function(){ $.ajax({ type: 'POST', url: JASAjaxURL, dataType: 'json', data: { action:'load_mini_cart' }, success:function(data){ if(data.message!=null&&$(data.message.error).length > 0){ $('body').append('
' + data.message.error + '
'); $('.woocommerce-message').remove(); }else{ var cartContent=$('.jas-mini-cart .widget_shopping_cart_content'); if(data.cart_html.length > 0){ cartContent.html(data.cart_html); } $('.jas-icon-cart .count').text(data.cart_total); var mask='
'; $('body').toggleClass('cart-opened'); $(mask).hide().appendTo('body').fadeIn('fast'); $('.mask-overlay, .close-cart').on('click', function(){ $('body').removeClass('cart-opened'); $('.mask-overlay').remove(); }); }} }); } var initAddToCart=function(){ var _input=$('.quantity input'), _quantity=_input.attr('max'); if(_quantity!=''){ _input.bind('keyup mouseup change click', function (){ if(parseInt($(this).val()) > parseInt(_quantity)){ $('.single_add_to_cart_button').addClass('disabled'); }else{ $('.single_add_to_cart_button').removeClass('disabled'); }}); } $('body').on('click', '.single_add_to_cart_button', function(){ var _this=$(this), _form=_this.parents('form'); if(_this.hasClass('disabled')||$('.btn-atc').hasClass('no-ajax')) return; $.ajax({ type: 'POST', url: JASSiteURL, dataType: 'html', data: _form.serialize(), cache: false, headers: { 'cache-control': 'no-cache' }, beforeSend: function(){ _this.append(''); }, success:function(){ setTimeout(function(){ $('.fa-spinner').remove(); $.magnificPopup.close(); }, 480) refreshMiniCart(); }}); return false; }); if($('.cart-moved').length > 0){ $('.btn-atc').appendTo('.cart-moved'); }} var initSwitchCurrency=function(){ $('body').on('click', '.currency-item', function(){ var currency=$(this).data('currency'); $.cookie('jas_currency', currency, { path: '/' }); location.reload(); $(document.body).trigger('wc_fragment_refresh'); }); } var wcInitPopupVideo=function(){ if($('.p-video').length > 0){ $('.jas-popup-url').magnificPopup({ disableOn: 0, type: 'iframe', }); $('.jas-popup-mp4').magnificPopup({ disableOn: 0, type: 'inline', }); }} var wcLiveSearch=function(){ if(! $.fn.autocomplete) return; $('.jas-ajax-search').autocomplete({ source: function(request, response){ $.ajax({ url: JASAjaxURL , dataType: 'json', data: { key: request.term, action: 'jas_claue_live_search' }, success: function(data){ response(data); }}); }, minLength: 2, select: function(event, ui){ window.location=ui.item.url; }, open: function(){ $(this).removeClass('ui-corner-all').addClass('ui-corner-top'); }, close: function(){ $(this).removeClass('ui-corner-top').addClass('ui-corner-all'); }}).data('ui-autocomplete')._renderItem=function(ul, item){ return $('
  • ') .data('ui-autocomplete-item', item) .attr('data-url', item.url) .append("
    " + item.label + "

    " + item.except + "

    ") .appendTo(ul); };} var initAjaxLoad=function(){ var button=$('.jas-ajax-load'); button.each(function(i, val){ var _option=$(this).data('load-more'); if(_option!==undefined){ var page=_option.page, container=_option.container, layout=_option.layout, isLoading=false, anchor=$(val).find('a'), next=$(anchor).attr('href'), i=2; if(layout=='loadmore'){ $(val).on('click', 'a', function(e){ e.preventDefault(); anchor=$(val).find('a'); next=$(anchor).attr('href'); $(anchor).html(''); getData(); }); }else{ var animationFrame=function(){ anchor=$(val).find('a'); next=$(anchor).attr('href'); var bottomOffset=$('.' + container).offset().top + $('.' + container).height() - $(window).scrollTop(); if(bottomOffset < window.innerHeight&&bottomOffset > 0&&! isLoading){ if(! next) return; isLoading=true; $(anchor).html(''); getData(); }} var scrollHandler=function(){ requestAnimationFrame(animationFrame); }; $(window).scroll(scrollHandler); } var getData=function(){ $.get(next + '', function(data){ var content=$('.' + container, data).wrapInner('').html(), newElement=$('.' + container, data).find('.portfolio-item, .product'); $(content).imagesLoaded(function(){ next=$(anchor, data).attr('href'); $('.' + container).append(newElement).isotope('appended', newElement); }); $(anchor).text(JAS_Data_Js['load_more']); if(page > i){ if(JAS_Data_Js!=undefined&&JAS_Data_Js[ 'permalink' ]=='plain'){ var link=next.replace(/paged=+[0-9]+/gi, 'paged=' +(i + 1)); }else{ var link=next.replace(/page\/+[0-9]+\//gi, 'page/' +(i + 1) + '/'); } $(anchor).attr('href', link); }else{ $(anchor).text(JAS_Data_Js['no_more_item']); $(anchor).removeAttr('href').addClass('disabled'); } isLoading=false; i++; }); }} }); if($('.yith-wcan').length > 0&&button.length > 0){ $('body').on('click', '.yith-wcan a', function(){ $(document).ajaxComplete(function(){ window.location.reload(); }); }); }} var initScrollReveal=function(){ window.sr=ScrollReveal().reveal('.jas-animated', { duration: 700 }); } function initCountdown(){ var $el=$('.jas-countdown'); $el.each(function(i, val){ var _option=$(this).data('time'); if(_option!==undefined){ var _day=_option.day, _month=_option.month, _year=_option.year, _end=_month + ' ' + _day + ', ' + _year + ' 00:00:00'; $(val).countdown({ date: _end, render: function(data){ $(this.$el).html("
    " + this.leadingZeros(data.days, 2) + "" + JAS_Data_Js['days'] + "
    " + this.leadingZeros(data.hours, 2) + "" + JAS_Data_Js['hrs'] + "
    " + this.leadingZeros(data.min, 2) + "" + JAS_Data_Js['mins'] + "
    " + this.leadingZeros(data.sec, 2) + "" + JAS_Data_Js['secs'] + "
    "); }}); }}); } var wcInitSwitchLayout=function(){ $('body').on('click', '.wc-col-switch a', function(e){ e.preventDefault(); var _this=$(this), _col=_this.data('col'), _parent=_this.closest('.wc-col-switch'), _products=$('.products .product'), _sizer=$('.products .grid-sizer'); if(_this.hasClass('active')){ return; } _parent.find('a').removeClass('active'); _this.addClass('active'); _products.removeClass('jas-col-md-2 jas-col-md-3 jas-col-md-4 jas-col-md-6').addClass('jas-col-md-' + _col); _sizer.removeClass('size-2 size-3 size-4 size-6 size-12').addClass('size-' + _col) if($('.products').hasClass('jas-masonry')){ initMasonry(); }}); } var wcInitSidebarFilter=function(){ $('body').on('click', '.filter-trigger', function(e){ $('.jas-filter-wrap').toggleClass('opened'); $('.close-filter').on('click', function(){ $('.jas-filter-wrap').removeClass('opened'); }); e.preventDefault(); }); } function wcAccordion(){ $('.wc-accordions .tab-heading').click(function(e){ e.preventDefault(); var _this=$(this); var parent=_this.closest('.wc-accordion'); var parent_top=_this.closest('.wc-accordions'); if(parent.hasClass('active')){ parent.removeClass('active'); parent.find('.entry-content').stop(true, true).slideUp(); }else{ parent_top.find('.wc-accordion').removeClass('active'); parent.addClass('active'); parent_top.find('.entry-content').stop(true, true).slideUp(); parent.find('.entry-content').stop(true, true).slideDown(); }}); } function wcStickySidebar(){ if($('.jas-sidebar-sticky').length > 0){ $('.jas-sidebar-sticky').stick_in_parent(); }} function initPrettyPhoto(){ if(typeof $.fn.prettyPhoto=="function"){ $('a.zoom').prettyPhoto({ hook: 'data-rel', social_tools: false, theme: 'pp_woocommerce', horizontal_padding: 20, opacity: 0.8, deeplinking: false }); $('a[data-rel^="prettyPhoto"]').prettyPhoto({ hook: 'data-rel', social_tools: false, theme: 'pp_woocommerce', horizontal_padding: 20, opacity: 0.8, deeplinking: false }); }} function initOpenswatch(){ $(document.body).off('openswatch_update_images').bind('openswatch_update_images',function(event, data){ var data_html=data.html; var productId=data.productId; $('#product-' + productId + ' .single-product-thumbnail').html(data_html); setTimeout(function(){ initCarousel(); initPrettyPhoto(); }, 10); }); $('body').on('click', '.product-list-color-swatch a', function(){ var src=$(this).data('thumb'); if(src!=''){ $(this).closest('.product').find('img.wp-post-image').first().attr('src', src); $(this).closest('.product').find('img.wp-post-image').first().attr('srcset', src); }}); } function innitWCWS(){ $(document.body).off('wpa_wcvs_update_html').bind('wpa_wcvs_update_html',function(event, data){ var data_html=data.html, productId=data.pid; $('#product-' + productId + ' .single-product-thumbnail').html(data_html); setTimeout(function(){ initCarousel(); initPrettyPhoto(); }, 10); }); } function initPreLoader(){ var loader=$('.preloader'); if(loader.length){ $(window).on('pageshow', function(event){ if(event.originalEvent!=undefined&&event.originalEvent.persisted){ loader.fadeIn(500, function(){ loader.hide(); loader.children().hide(); }); }}); $(window).on('beforeunload', function(){ loader.fadeIn(500, function(){ loader.children().fadeIn(100) }); }); loader.fadeOut(800); loader.children().fadeOut(); }} function customThirdParties(){ $('body').on('click', '.vc_tta-tab a', function(e){ if($('.jas-carousel').length > 0){ $('.jas-carousel').slick('unslick'); setTimeout(function(){ $('.jas-carousel').not('.slick-initialized').slick(); }, 50); }}); $.fn.wc_variations_image_update=function(variation){ var $form=this, $product=$form.closest('.product'), $product_gallery=$product.find('.images'), $gallery_img=$product.find('.p-nav .slick-slide[data-slick-index="0"] img'), $product_img_wrap=$product_gallery.find('.woocommerce-product-gallery__image, .woocommerce-product-gallery__image--placeholder').eq(0), $product_img=$product_img_wrap.find('.wp-post-image'), $product_link=$product_img_wrap.find('a').eq(0); if(variation&&variation.image&&variation.image.src&&variation.image.src.length > 1){ $product_img.wc_set_variation_attr('src', variation.image.src); $product_img.wc_set_variation_attr('height', variation.image.src_h); $product_img.wc_set_variation_attr('width', variation.image.src_w); $product_img.wc_set_variation_attr('srcset', variation.image.srcset); $product_img.wc_set_variation_attr('sizes', variation.image.sizes); $product_img.wc_set_variation_attr('title', variation.image.title); $product_img.wc_set_variation_attr('alt', variation.image.alt); $product_img.wc_set_variation_attr('data-src', variation.image.full_src); $product_img.wc_set_variation_attr('data-large_image', variation.image.full_src); $product_img.wc_set_variation_attr('data-large_image_width', variation.image.full_src_w); $product_img.wc_set_variation_attr('data-large_image_height', variation.image.full_src_h); $product_img_wrap.wc_set_variation_attr('data-thumb', variation.image.src); $gallery_img.wc_set_variation_attr('src', variation.image.thumb_src); $product_link.wc_set_variation_attr('href', variation.image.full_src); }else{ $product_img.wc_reset_variation_attr('src'); $product_img.wc_reset_variation_attr('width'); $product_img.wc_reset_variation_attr('height'); $product_img.wc_reset_variation_attr('srcset'); $product_img.wc_reset_variation_attr('sizes'); $product_img.wc_reset_variation_attr('title'); $product_img.wc_reset_variation_attr('alt'); $product_img.wc_reset_variation_attr('data-src'); $product_img.wc_reset_variation_attr('data-large_image'); $product_img.wc_reset_variation_attr('data-large_image_width'); $product_img.wc_reset_variation_attr('data-large_image_height'); $product_img_wrap.wc_reset_variation_attr('data-thumb'); $gallery_img.wc_reset_variation_attr('src'); $product_link.wc_reset_variation_attr('href'); } window.setTimeout(function(){ $product_gallery.trigger('woocommerce_gallery_init_zoom'); $form.wc_maybe_trigger_slide_position_reset(variation); $(window).trigger('resize'); }, 10); };} var wcInitImageZoom=function(){ if($('.jas-image-zoom').length > 0){ var img=$('.jas-image-zoom'); img.zoom({ touch: false }); }} $(document).ready(function(){ initCarousel(); initMasonry(); initSearchForm(); initDropdownMenu(); initPushMenu(); initRTLMenu(); initQuickView(); initAddToCart(); initMiniCart(); initAjaxLoad(); initScrollReveal(); initCountdown(); initOpenswatch(); innitWCWS(); backToTop(); initMagnificPopup(); initSwitchCurrency(); initPreLoader(); wcInitPopupVideo(); wcLiveSearch(); wcInitSwitchLayout(); wcQuantityAdjust(); wcExtraContent(); wcInitSidebarFilter(); wcAccordion(); wcStickySidebar(); wcInitImageZoom(); initPrettyPhoto(); customThirdParties(); }); $(window).load(function(){ initStickyMenu(); }); })(jQuery);